package com.ecommerce.user.dto;

import com.ecommerce.user.entity.User;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.MappingTarget;

import java.util.List;

/**
 * 用户映射器
 */
@Mapper(componentModel = "spring")
public interface UserMapper {

    /**
     * 实体转响应DTO
     * @param user 用户实体
     * @return 用户响应DTO
     */
    UserResponse entityToResponseDto(User user);

    /**
     * 实体列表转响应DTO列表
     * @param users 用户实体列表
     * @return 用户响应DTO列表
     */
    List<UserResponse> entityToResponseDtoList(List<User> users);

    /**
     * 更新实体
     * @param user 用户实体
     * @param userResponse 用户响应DTO
     */
    @Mapping(target = "password", ignore = true)
    void updateEntity(@MappingTarget User user, UserResponse userResponse);
}